﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Dora.Tools.EContract.Dto
{
    /// <summary>
    /// 委托事项信息
    /// </summary>
    public class Entrustment
    {
        /// <summary>
        /// 预定项目及要求
        /// </summary>
        public Order order { get; set; }
        /// <summary>
        /// 通用条款
        /// </summary>
        public List<Clauses> clauses { get; set; }
    }

    #region 预定项目及要求
    public class Order
    {
        /// <summary>
        /// 机票预定相关
        /// </summary>
        public List<AirTickets> airTickets { get; set; } 
        /// <summary>
        /// 酒店预定代办
        /// </summary>
        public Accommodation accommodation { get; set; }
        /// <summary>
        /// 用车代办
        /// </summary>
        public TransportService transportService { get; set; }
        /// <summary>
        /// 导游服务代办
        /// </summary>
        public TourGuideService tourGuideService { get; set; }
        /// <summary>
        /// 签证代办
        /// </summary>
        public VisaService visaService { get; set; }
        /// <summary>
        /// 其他服务
        /// </summary>
        public OtherService otherService { get; set; }
        /// <summary>
        /// 办理费用合计
        /// </summary>
        public decimal totalCost { get; set; }
    }

    #region 机票预定相关
    /// <summary>
    /// 机票预定相关
    /// </summary>
    public class AirTickets
    {
        /// <summary>
        /// 总税费（单位：元）
        /// </summary>
        public decimal totalCostTax { get; set; }
        /// <summary>
        /// 机票总张数
        /// </summary>
        public int totalCount { get; set; }
        /// <summary>
        /// 机票总价
        /// </summary>
        public decimal totalCost { get; set; }
        /// <summary>
        /// 其他说明
        /// </summary>
        public string memo { get; set; }
        /// <summary>
        /// 航班列表
        /// </summary>
        public List<Flignt> flignts { get; set; }
    }

    #region 航班
    /// <summary>
    /// 航班
    /// </summary>
    public class Flignt
    {
        /// <summary>
        /// 出发日期，YYYY-MM-DD
        /// </summary>
        public string departureTime { get; set; }
        /// <summary>
        /// 返回日期，YYYY-MM-DD
        /// </summary>
        public string arrivalTime { get; set; }
        /// <summary>
        /// 1单程 2往返 允许值1，2
        /// </summary>
        public int tripType { get; set; }
        /// <summary>
        /// 单条预定张数
        /// </summary>
        public int totalNumber { get; set; }
        /// <summary>
        /// 出发信息
        /// </summary>
        public SourceOrDestination source { get; set; }
        /// <summary>
        /// 到达信息
        /// </summary>
        public SourceOrDestination destination { get; set; }
    }

    /// <summary>
    /// 出发、到达城市信息
    /// </summary>
    public class SourceOrDestination
    {
        /// <summary>
        /// 城市
        /// </summary>
        public string description { get; set; }
    }

    #endregion

    #endregion

    #region 酒店预定代办

    /// <summary>
    /// 酒店预定代办
    /// </summary>
    public class Accommodation
    {
        /// <summary>
        /// 酒店费用合计
        /// </summary>
        public decimal totalPrice { get; set; }
        /// <summary>
        /// 酒店预定其他说明
        /// </summary>
        public string memo { get; set; }
        /// <summary>
        /// 酒店信息列表
        /// </summary>
        public List<Accommodations> accommodations { get; set; }
    }

    /// <summary>
    /// 酒店信息
    /// </summary>
    public class Accommodations
    {
        /// <summary>
        /// 酒店名称
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 国家/城市
        /// </summary>
        public string address { get; set; }
        /// <summary>
        /// 入住日期，YYYY-MM-DD
        /// </summary>
        public string checkInDate { get; set; }
        /// <summary>
        /// 离开日期，YYYY-MM-DD
        /// </summary>
        public string checkOutDate { get; set; }
        /// <summary>
        /// 房型
        /// </summary>
        public string roomType { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        public int rooms { get; set; }
        /// <summary>
        /// 单价
        /// </summary>
        public decimal roomPrice { get; set; }
    }

    #endregion

    #region 用车代办
    /// <summary>
    /// 用车代办
    /// </summary>
    public class TransportService
    {
        /// <summary>
        /// 用车总数量
        /// </summary>
        public int totalNumber { get; set; }
        /// <summary>
        /// 用车总费用
        /// </summary>
        public decimal totalCost { get; set; }
        /// <summary>
        /// 用车服务其他说明
        /// </summary>
        public string memo { get; set; }
        /// <summary>
        /// 用车列表
        /// </summary>
        public List<TransportServices> transportServices { get; set; }
    }

    /// <summary>
    /// 用车
    /// </summary>
    public class TransportServices
    {
        /// <summary>
        /// 服务日期，YYYY-MM-DD
        /// </summary>
        public string time { get; set; }
        /// <summary>
        /// 车型
        /// </summary>
        public string model { get; set; }
        /// <summary>
        /// 乘客人数
        /// </summary>
        public int passengerNumber { get; set; }
        /// <summary>
        /// 服务类型 1接送机单程 2接送机往返 99其他
        /// </summary>
        public int serviceType { get; set; }
        /// <summary>
        /// 单价
        /// </summary>
        public string cost { get; set; }
        /// <summary>
        /// 出发地信息
        /// </summary>
        public SourceOrDestination source { get; set; }
        /// <summary>
        /// 目的地信息
        /// </summary>
        public SourceOrDestination destination { get; set; }
    }

    #endregion

    #region 导游服务代办
    /// <summary>
    /// 导游服务代办
    /// </summary>
    public class TourGuideService
    {
        /// <summary>
        /// 导游总人数
        /// </summary>
        public int totalNumber { get; set; }
        /// <summary>
        /// 导游费用合计
        /// </summary>
        public decimal totalCost { get; set; }
        /// <summary>
        /// 导游服务其他说明
        /// </summary>
        public string memo { get; set; }
        /// <summary>
        /// 导游服务
        /// </summary>
        public List<TourGuideServices> tourGuideServices { get; set; } 
    }

    /// <summary>
    /// 用车
    /// </summary>
    public class TourGuideServices
    {
        /// <summary>
        /// 服务日期，YYYY-MM-DD
        /// </summary>
        public string time { get; set; }
        /// <summary>
        /// 语种
        /// </summary>
        public string languages { get; set; }
        /// <summary>
        /// 性别0男 1女
        /// </summary>
        public int gender { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        public int totalNumber { get; set; }
    }

    #endregion

    #region 签证代办
    public class VisaService
    {
        /// <summary>
        /// 办理人数
        /// </summary>
        public int totalNumber { get; set; }
        /// <summary>
        /// 办理总费用
        /// </summary>
        public decimal totalCost { get; set; }
        /// <summary>
        /// 代办签证其他说明
        /// </summary>
        public string memo { get; set; }
        /// <summary>
        /// 签证资料提交最终期限，时间：YYYY-MM-DD
        /// </summary>
        public string visaDeadline { get; set; }
        /// <summary>
        /// 签证列表
        /// </summary>
        public List<VisaServices> visaServices { get; set; }
    }

    /// <summary>
    /// 签证
    /// </summary>
    public class VisaServices
    {
        /// <summary>
        /// 服务类型 1签证 2签注 3入台证
        /// </summary>
        public int type { get; set; }
        /// <summary>
        /// 前往事由
        /// </summary>
        public string reason { get; set; }
        /// <summary>
        /// 签注日期，YYYY-MM-DD
        /// </summary>
        public string time { get; set; }
        /// <summary>
        /// 入境次数
        /// </summary>
        public int entryTime { get; set; }
        /// <summary>
        /// 签注工作日
        /// </summary>
        public int weekdayNumber { get; set; }
        /// <summary>
        /// 预计出行日期，YYYY-MM-DD
        /// </summary>
        public string departureTime { get; set; }
        /// <summary>
        /// 费用
        /// </summary>
        public decimal cost { get; set; }
        /// <summary>
        /// 地址
        /// </summary>
        public VisaAddress address { get; set; }
    }

    /// <summary>
    /// 地址
    /// </summary>
    public class VisaAddress
    {
        /// <summary>
        /// 国家/地区
        /// </summary>
        public string country { get; set; }
    }

    #endregion

    #region 其他服务
    /// <summary>
    /// 其他服务
    /// </summary>
    public class OtherService
    {
        /// <summary>
        /// 服务内容
        /// </summary>
        public string item { get; set; }
        /// <summary>
        /// 办理人数
        /// </summary>
        public int totalNumber { get; set; }
    }

    #endregion

    #endregion

    #region 通用条款
    /// <summary>
    /// 通用条款
    /// </summary>
    public class Clauses
    {
        /// <summary>
        /// 条款名称
        /// </summary>
        public string item { get; set; }
        /// <summary>
        /// 条款具体提示
        /// </summary>
        public string hint { get; set; }
    }

    #endregion

}
